package com.gushenge.core.requests

import android.util.Log
import com.gushenge.core.base.Base
import com.gushenge.core.beans.*
import com.gushenge.core.dao.GlobalConsts
import com.gushenge.core.dao.MMKVConsts
import com.gushenge.core.httpSign
import com.gushenge.core.time
import com.gushenge.core.toast
import com.rxlife.coroutine.RxLifeScope
import rxhttp.awaitResult
import rxhttp.onErrorReturn
import rxhttp.toClass
import rxhttp.wrapper.param.RxHttp

object VideoRequest {
    fun getVideoList(p:Int,type:Int,listener:(ArrayList<Video>,Int,Int)->Unit){
        RxLifeScope().launch {
             RxHttp.get(GlobalConsts.VIDEO_RECOMMEND)
                    .add("uid", MMKVConsts.uid)
                    .add("t", time)
                    .add("sign", httpSign(MMKVConsts.uid))
                    .add("type",type)
                    .add("p",p)
                    .add("member_id",MMKVConsts.sub)
                    .add("language", MMKVConsts.language)
                    .toClass<Codes<Video>>()
                    .awaitResult {
                        if(it.code==1){
                            listener(it.data,it.p,it.max_p)
                        }else{
                            it.message.toast()
                        }
                    }

        }
    }


    fun videoDianZan(id:String,listener:()->Unit){
        RxLifeScope().launch {
            val result = RxHttp.get(GlobalConsts.VIDEO_ZAN)
                    .add("uid", MMKVConsts.uid)
                    .add("t", time)
                    .add("sign", httpSign(MMKVConsts.uid))
                    .add("id",id)
                    .add("member_id",MMKVConsts.sub)
                    .add("language", MMKVConsts.language)
                    .toClass<Code<String>>()
                    .await()
            if(result.code==1){
                listener()
            }
        }
    }
    fun videoGuanzhu(videoAttention: VideoAttention,id:String,listener:()->Unit){
        RxLifeScope().launch {
            val result = RxHttp.get(GlobalConsts.VIDEO_GUANZHU)
                    .add("uid", MMKVConsts.uid)
                    .add("t", time)
                    .add("sign", httpSign(MMKVConsts.uid))
                    .add("id",id)
                    .add("type",if (videoAttention==VideoAttention.GUANZHU) 0 else 1)
                    .add("member_id",MMKVConsts.sub)
                    .add("language", MMKVConsts.language)
                    .toClass<Code<String>>()
                    .await()
            result.message.toast()
            if(result.code==1){
                listener()
            }
        }
    }
    enum class VideoAttention {
        GUANZHU,
        QUGUAN
    }


    fun videoDiscuss(id:String,listener:ArrayList<VideoDiscuss>.()->Unit){
        RxLifeScope().launch {
            val result = RxHttp.get(GlobalConsts.VIDEO_DISCUSS)
                    .add("uid", MMKVConsts.uid)
                    .add("t", time)
                    .add("sign", httpSign(MMKVConsts.uid))
                    .add("id",id)
                    .add("member_id",MMKVConsts.sub)
                    .add("language", MMKVConsts.language)
                    .toClass<Codes<VideoDiscuss>>()
                    .await()
            if(result.code==1){
                listener(result.data)
            }else{
                result.message.toast()
            }
        }
    }
    fun videoDiscussZan(id:String,listener:()->Unit){
        RxLifeScope().launch {
            val result = RxHttp.get(GlobalConsts.VIDEO_DISCUSS_ZAN)
                    .add("uid", MMKVConsts.uid)
                    .add("t", time)
                    .add("sign", httpSign(MMKVConsts.uid))
                    .add("id",id)
                    .add("member_id",MMKVConsts.sub)
                    .add("language", MMKVConsts.language)
                    .toClass<Code<String>>()
                    .await()
            if(result.code==1){
                listener()
            }
        }
    }
    fun videoDiscussAdd(id:String,content:String,point:Float,listener:()->Unit){
        RxLifeScope().launch {
            val result = RxHttp.get(GlobalConsts.VIDEO_DISCUSS_ADD)
                    .add("uid", MMKVConsts.uid)
                    .add("t", time)
                    .add("sign", httpSign(MMKVConsts.uid))
                    .add("id",id)
                    .add("content",content)
                    .add("point",point.toString())
                    .add("member_id",MMKVConsts.sub)
                    .add("language", MMKVConsts.language)
                    .toClass<Code<String>>()
                    .await()
            if(result.code==1){
                listener()
            }else{
                result.message.toast()
            }
        }
    }
    fun gameDiscussAdd(content:String,listener:()->Unit){
        RxLifeScope().launch {
            val result = RxHttp.get("${Base.BASEURLV3}/?ct=app&ac=add_pinglun")
                    .add("uid", MMKVConsts.uid)
                    .add("t", time)
                    .add("sign", httpSign(MMKVConsts.uid))
                    .add("id",MMKVConsts.gid)
                    .add("content",content)
                    .add("member_id",MMKVConsts.sub)
                    .add("language", MMKVConsts.language)
                    .toClass<Code<String>>()
                    .await()
            result.message.toast()
            if(result.code==1){
                listener()
            }
        }
    }
    fun gameDiscussZan(id:String,listener:()->Unit){
        RxLifeScope().launch {
            val result = RxHttp.get("${Base.BASEURLV3}/?ct=app&ac=pinglun_zan")
                    .add("uid", MMKVConsts.uid)
                    .add("t", time)
                    .add("sign", httpSign(MMKVConsts.uid))
                    .add("id",id)
                    .add("member_id",MMKVConsts.sub)
                    .add("language", MMKVConsts.language)
                    .toClass<Code<String>>()
                    .await()
            if(result.code==1){
                listener()
            }
        }
    }
}